const Joi = require('@hapi/joi');
const Admin = require('../models/admin.model')
module.exports = [
  {
    method: 'GET',
    path: '/admin',
    options: {
      // auth: {
      //   access: {
      //     scope: 'admin'
      //   }
      // },
      handler: (request, h) => {
        const page = request.query.page || 1;
        const sort = request.query.sort || Admin.Model.pk || 'id';
        const desc = request.query.descending || 'false';
        const page_size = request.query.page_size || 20;
        // const trashed = request.query.trashed || 'false';
        return Admin.Model.findAll({
            offset: (page - 1) * page_size,
            limit: parseInt(page_size),
            order: [[sort, desc === 'true' ? 'desc' : 'asc']],
            where: {}
        }).then((contents) => {
            return Admin.Model.count().then((count) => {
                return {
                    totle: count,
                    per_page: 20,
                    current_page: page,
                    last_page: Math.ceil(count / 20),
                    data: contents
                };
            });
        }).catch((err) => {
            request.log('debug', err);
            return h.response(err.message).code(500);
        });
        // return {
        //   totle: 1,
        //   per_page: 20,
        //   current_page: 1,
        //   last_page: 2
        // }
      },
      tags: ['api', 'Admin'],
      description: '获取管理员数据列表',
      notes: '按照query条件返回管理员(content表)的数据列表',
      validate: {
        query: Joi.object({
            page: Joi.number().integer().positive().min(1).default(1).description('分页页码'),
            sort: Joi.string().default('id').description('排序字段'),
            descending: Joi.boolean().default('false').description('是否desc'),
            page_size: Joi.number().integer().min(-1).default(20).description('分页容量')
        }).label('SearchCondition')
      },
      response: {
          schema: Joi.object({
              totle: Joi.number().min(0).description('总数'),
              per_page: Joi.number().default(20).description('每页数量'),
              current_page: Joi.number().min(1).description('当前页码'),
              last_page: Joi.number().min(0).description('总页数'),
              data: Joi.array().items(Admin.Schema)
          }).label('AdminList')
      }
    }
  }
]